//
//  NSDate+Extension.swift
//  Weibo
//
//  Created by 米易雅克 on 16/4/26.
//  Copyright © 2016年 米易雅克. All rights reserved.
//

import Foundation

extension NSDate {

    //将新浪返回的时间字符串转成系统的nsdate
    class func date(sinaString: String) -> NSDate {
        let df = NSDateFormatter()
        
        //指定时间字符串的格式
        df.dateFormat = "EEE MMM dd HH:mm:ss zzz yyyy"
        //指定真机的格式
        df.locale = NSLocale(localeIdentifier: "EN")
        
        //将字符串转换成nsdate，nsdate在输出时是以0时区来输出的
        let  date = df.dateFromString(sinaString) ?? NSDate()
        
        return date
    
    }

    //根据时间的需求返回不同的字符串，和当前时间比较
    //返回时间
    //格式
    //刚刚（一分钟内）／ x分钟前（一小时之内）／x小时前（当天）／昨天HH：mm／一年内MM－dd HH：mm／yyyy－MM－dd HH：mm（更早前）
    
    //self是新浪传入的时间
    func sinaDateDescription() -> String {
    //时间比较，NSCalendar.currentCalender()当前时间
        let calendar = NSCalendar.currentCalendar()
        
        //当天
        if calendar.isDateInToday(self) {
            //新浪时间和系统当前时间相差秒数
            let dateInterval: Int = Int(NSDate().timeIntervalSinceDate(self))
            
            //一分钟
            if dateInterval < 60 {
                return "刚刚"
            }
            
            //一小时内
            if dateInterval < 60 * 60 {
                //x分钟前
                return "\(dateInterval / 60)分钟前"
            }
            
            //当天
            //x小时前
            return "\(dateInterval / 60 / 60)小时前"
            
        }
        //后面的几种情况
        var dateFormat = ""

        //昨天
        if calendar.isDateInYesterday(self) {
            print("昨天")
            dateFormat = "昨天 HH:mm"
        }else if calendar.compareDate(self, toDate: NSDate(), toUnitGranularity: NSCalendarUnit.Year) == NSComparisonResult.OrderedSame {
            //一年内
            //比较时间，新浪时间和当前时间比较，相同
            //date1 NSDate
            //toDate NSDate
            //toUnitGranularity 比较的单位
            //NSDate(): 系统当前时间
            print("一年内")
            dateFormat = "MM-dd HH:mm"
            
        }else {
            print("更早期")
            dateFormat = "yyyy-MM-dd HH:mm"
        }
            //指定转换格式,将新浪的NSDate转成特殊的字符串
        let df = NSDateFormatter()
        
        //指定转换的格式
        df.dateFormat = dateFormat
        df.locale = NSLocale(localeIdentifier: "EN")
        
        //新浪NSDte转成特殊的字符串
        let dateString = df.stringFromDate(self)
        return dateString
      
    }
}